package cn.com.api.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.com.api.entity.ApiCar;
import cn.com.api.resultpage.CarOrderPage;

public interface ApiCarMapper {
	// 添加购物车
	public void addCar(ApiCar car);

	// 查看购物车
	public List<ApiCar> goCar(@Param("u_id") String u_id, @Param("city_id") Integer city_id,
			@Param("status") Integer status);

	// 查看购物车
	public List<ApiCar> goCarByMap(HashMap map);

	// 根据购物单号查询购物列表---未生成订单后，查询
	public List<CarOrderPage> searchCarGoodsByCidsBeforeOrder(List<Integer> cIds);

	// 根据购物单号查询购物列表---生成订单后，查询
	public List<CarOrderPage> searchCarGoodsByCids(List<Integer> cIds);

	// 根据u_id、goods_id 判断商品是否已添加到购物车-status=0(未成单-正常)
	public ApiCar searchCarGoodsByUidAndGoodsId(@Param("u_id") String u_id, @Param("goods_id") Integer goods_id);

	// 根据u_id、goods_id 判断商品是否已添加到购物车-status=0(未成单-正常)
	public ApiCar searchCarGoodsByUidAndProductId(@Param("u_id") String u_id, @Param("product_id") Long product_id);

	// 修改商品数量
	public void updateCarCount(ApiCar car);

	// 修改购物车信息
	public void updateCar(ApiCar car);

	// 修改购物车信息：status：0:正常;1:已删除;2:已成单
	public void modifyCarInfo(Map<String, Object> map);

	// 根据cid，删除购物车，-----不用in 这样快
	public void updateCarStatus(@Param("c_id") Integer c_id, @Param("status") Integer status);

	// 根据cid，删除购物车，-----不用in 这样快
	public void deleteAllCar(@Param("list") String[] cids, @Param("status") Integer status);

	// 查看用户购物车数量
	public Map<String, Object> getMyCarCount(@Param("u_id") String u_id, @Param("city_id") Integer city_id);

	// 判断是否已生成订单---cids 且 status=2
	public List<ApiCar> checkHasOrder(List<Integer> cIds);

	// 校验库存数量
	public List<ApiCar> checkStock(List<Integer> cIds);

	// 校验下单的购物车记录是否1元购商品
	public List<ApiCar> checkOneGoods(List<Integer> cIds);

	// 校验添加到购物车的商品product_id 是否是1元购商品
	public Integer checkIsOneGoods(String product_id);

	// 校验购物车里是否有有效的1元购商品
	public Integer checkCarHasOneGoods(String u_id);

	// 根据carid 查询购物车记录
	public ApiCar findApiCarById(@Param("car_id") Integer car_id);

	public void delCarById(int id);

	public void delAllCarByUserId(String userId);

	public List<Map<String, Object>> seeMyCart(String userId);

	public List<ApiCar> showMyChose(List<String> list);

	public List<ApiCar> getCarInfoByCarIds(List<String> list);

	public String getMaxIdByUserId(String userId);

	public ApiCar getApiCarByCondition(Map<String, Object> map);

	public void updateCarByCarId(@Param(value = "carId") String carId, @Param(value = "status") String status);

	public void removeOverDueGoods(@Param("userId") String userId, @Param(value = "currentDate") String currentDate,
			@Param(value = "currentHour") String currentHour);

	public void updateCardStatusByList(@Param(value = "list") List<String> list,
			@Param(value = "status") String status);

	public void updateCarByUserId(@Param(value = "userId") String userId, @Param(value = "status") String status);

}